﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Cash.View.Administracao
{
    public partial class CadastroPagina : BasePageCash
    {
        private void exibeModal(String result)
        {
            lblResult.Text = result;
            ModalPopupExtender1.Show();
        }

        private void limpaCampo()
        {
            txtNome.Text = "";
            txtUrl.Text = "";
        }

        private int verificaPagina()
        {
            int count = (from pag in cashEntity.PAGINA
                         where pag.NOME.Equals(txtNome.Text) &&
                               pag.ID_STATUS == 1
                         select pag).Count();
            gravaBitacora("Pesquisa", "CadastroPagina->verificaPagina");
            return count;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                String idProduto = Request.QueryString["Id"] != null ? Request.QueryString["Id"].ToString() : "";

                ddlPai.DataSource = cashEntity.PAGINA;
                ddlPai.DataTextField = "NOME";
                ddlPai.DataValueField = "ID_PAGINA";
                ddlPai.DataBind();

                //Verifica se e referente a alteracao
                if (!"".Equals(idProduto))
                {
                    btnCadastrar.Text = "Atualizar";
                    txtNome.Enabled = false;

                    int valor = Int32.Parse(Request.QueryString["Id"]);

                    PAGINA pagina = new PAGINA();
                    pagina = cashEntity.PAGINA.Where(c => c.ID_PAGINA == valor).First();
                    txtNome.Text = pagina.NOME;
                    ddlPai.SelectedValue = pagina.ID_PAGINA_PAI.ToString();
                    txtUrl.Text = pagina.URL;
                }
            }
        }

        protected void btnCadastrar_Click(object sender, EventArgs e)
        {
            hddResult.Value = "0";
            try
            {
                String tipoInstrucao = "";
                String idProduto = Request.QueryString["Id"] != null ? Request.QueryString["Id"].ToString() : "";

                ErroValidacao += Validacao.CampoVazio(txtNome.Text, "nome");
                ErroValidacao += Validacao.CampoVazio(txtUrl.Text, "url");
                ErroValidacao += Validacao.SelecioneDropDown(ddlPai.SelectedValue, "página pai");
                int tamanho = verificaPagina();
                if ("".Equals(idProduto) && tamanho > 0)
                {
                    ErroValidacao += "Página já cadastrada.<br/>";
                }

                //TESTE VALIDACAO
                if ("".Equals(ErroValidacao))
                {
                    PAGINA pagina = new PAGINA();
                    if (!"".Equals(idProduto))
                    {
                        int valor = Int32.Parse(Request.QueryString["Id"]);
                        pagina = cashEntity.PAGINA.Where(c => c.ID_PAGINA == valor).First();
                    }
                    pagina.ID_STATUS = 1;
                    pagina.ID_PAGINA_PAI = Int32.Parse(ddlPai.SelectedValue);
                    pagina.NOME = txtNome.Text;
                    pagina.URL = txtUrl.Text;
                    if ("".Equals(idProduto))
                    {
                        tipoInstrucao = "Cadastro realizado com sucesso";
                        pagina.DATA_CADASTRO = DateTime.Now;
                        cashEntity.AddToPAGINA(pagina);
                    }
                    else
                    {
                        tipoInstrucao = "Atualização realizada com sucesso";
                    }

                    cashEntity.SaveChanges();
                    gravaBitacora(idProduto, "Pagina -> " + pagina.NOME, 1);
                    exibeModal(tipoInstrucao);
                    //Response.Redirect("~/View/Manutencao/Categoria.aspx");
                    limpaCampo();
                    txtNome.Enabled = true;
                }
                else
                {
                    exibeModal(ErroValidacao);
                    hddResult.Value = "ERRO";
                }
            }
            catch (Exception ex)
            {
                gravaBitacora("ERRO", "Pagina -> " + ex.Message);
                exibeModal(ex.Message);
                hddResult.Value = "ERRO";
            }
        }
    }
}